home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / msqc25t1 / keys.c < prev    next >
C/C++ Source or Header  |  1990-09-29  |  3KB  |  103 lines

  1. /* keys.c: Captures and displays kepresses */
  2.  
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <dos.h>
  6. #include <graph.h>
  7. #include "textscrn.h"
  8.  
  9. #ifndef TRUE
  10. #define FALSE 0
  11. #define TRUE !FALSE
  12. #endif
  13.  
  14. /* Local functions */
  15. void setUpScreen (void);
  16. int extended (void);
  17.  
  18. main()
  19. {
  20.     char key;
  21.     int row = 1, col, repeating, c = 2;
  22.  
  23.     setUpScreen ();                     /* create work screen */
  24.  
  25.     /* Loop to process keypresses */
  26.     do {
  27.         col = c;
  28.         _settextposition (row, col);        /* place cursor */
  29.         key = getch();                  /* get next keypress */
  30.         if (key == 0)                       /* if null char */
  31.             repeating = extended ();    /* handle extended code */
  32.         else
  33.             if (key == ' ')
  34.                 _outtext ("Space");
  35.             else
  36.                 if (key == 27)
  37.                     _outtext ("ESC");
  38.                 else
  39.                     _outch (key);       /* else show char */
  40.         if (++row > 17)
  41.             row = 1, c+= 16;
  42.         if (c > 78) repeating = 0;      /* quit if screen full */
  43.     } while (repeating);
  44.  
  45.     /* End of run */
  46.     _setbordwindow (1, 1, 25, 80, 0, LTGRAY, BLACK);
  47.     _displaycursor (_GCURSORON);
  48. } /*---------------------------------------------------------------*/
  49.  
  50. void setUpScreen (void)
  51.                         /* Build display */
  52. {
  53.     /* Set up instruction box */
  54.     _displaycursor (_GCURSOROFF);       /* turn off cursor */
  55.     _setbordwindow (1, 1, 5, 80, 2, WHITE, BLUE);
  56.     _settextposition (2, 32);                   /* print instructions */
  57.     _outtext ("Keyboard Sampler");
  58.     _settextposition (3, 16);
  59.     _outtext ("Press any key and the program reports what it is");
  60.     _settextposition (4, 32);
  61.     _outtext ("Quit with Alt-X");
  62.  
  63.     /* Construct program workarea */
  64.     _setbordwindow (7, 2, 23, 79, 1, WHITE, BLACK);
  65. } /*------------------------------------------------------------------*/
  66.  
  67. extended (void)                    /* process extended codes */
  68. {
  69.     char ext;
  70.     int keepOn = TRUE;                  /* TRUE is default */
  71.  
  72.     ext = getch();                      /* get second byte */
  73.     switch (ext) {
  74.         case 45: keepOn = 0; break;     /* Alt-X for quit */
  75.         case 59: _outtext ("F1"); break;
  76.         case 60: _outtext ("F2"); break;
  77.         case 61: _outtext ("F3"); break;
  78.         case 62: _outtext ("F4"); break;
  79.         case 63: _outtext ("F5"); break;
  80.         case 64: _outtext ("F6"); break;
  81.         case 65: _outtext ("F7"); break;
  82.         case 66: _outtext ("F8"); break;
  83.         case 67: _outtext ("F9"); break;
  84.         case 68: _outtext ("F10"); break;
  85.         case 71: _outtext ("Home"); break;
  86.         case 72: _outtext ("Cursor up"); break;
  87.         case 73: _outtext ("PgUp"); break;
  88.         case 75: _outtext ("Cursor left"); break;
  89.         case 77: _outtext ("Cursor right"); break;
  90.         case 79: _outtext ("End"); break;
  91.         case 80: _outtext ("Cursor down"); break;
  92.         case 81: _outtext ("PgDn"); break;
  93.         case 82: _outtext ("Ins"); break;
  94.         case 83: _outtext ("Del"); break;
  95.         default: _outtext ("Other ext key");
  96.     }
  97.     return keepOn;
  98. }
  99.  
  100.  
  101.  
  102.  
  103.